package model;
// Generated 21/06/2013 19:36:24 by Hibernate Tools 3.2.1.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.faces.bean.ManagedBean;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Montadora generated by hbm2java
 */
@ManagedBean(name = "montadora")
@Entity
@Table(name = "montadora", catalog = "trabalhohibernate")
public class Montadora implements java.io.Serializable {

    private Integer id;
    private Origem origem;
    private String nome;
    private String contato;
    private Double imposto;
    private Date dataCadastro;
    private Set<Automovel> automovels = new HashSet<Automovel>(0);

    public Montadora() {
    }

    public Montadora(Origem origem, String nome, String contato, Double imposto, Date dataCadastro, Set<Automovel> automovels) {
        this.origem = origem;
        this.nome = nome;
        this.contato = contato;
        this.imposto = imposto;
        this.dataCadastro = dataCadastro;
        this.automovels = automovels;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "codOrigem")
    public Origem getOrigem() {
        return this.origem;
    }

    public void setOrigem(Origem origem) {
        this.origem = origem;
    }

    @Column(name = "nome")
    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "contato")
    public String getContato() {
        return this.contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    @Column(name = "imposto", precision = 22, scale = 0)
    public Double getImposto() {
        return this.imposto;
    }

    public void setImposto(Double imposto) {
        this.imposto = imposto;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "dataCadastro", length = 10)
    public Date getDataCadastro() {
        return this.dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "montadora")
    public Set<Automovel> getAutomovels() {
        return this.automovels;
    }

    public void setAutomovels(Set<Automovel> automovels) {
        this.automovels = automovels;
    }

    @Override
    public String toString() {
        return this.getNome();
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 31 * hash + id.intValue();
        hash += (id != null ? id.hashCode() : 7);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

        if (!(object instanceof Montadora)) {
            return false;
        }
        Montadora other = (Montadora) object;
        if ((this.id == null && other.id != null)
                || (this.id != null
                && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }
}
